/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.isd.promocion.web;

import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import com.isd.facturacion.modelo.MovimientoTienda;
import com.isd.facturacion.rn.MovimientoFacturacionRN;
import com.isd.global.rn.ParametrosRN;
import com.isd.global.util.JsfUtil;
import com.isd.global.web.MailFactory;
import com.isd.promocion.modelo.Promocion;
import com.isd.seguridad.web.UsuarioSessionBean;

/**
 *
 * @author ctrosch
 */
@Deprecated
@ManagedBean(name="promocionManual")
@SessionScoped
public class PromocionManual implements Serializable {

    @EJB private ParametrosRN parametroRN;
    @EJB private MovimientoFacturacionRN movimientoFacturacionRN;
    @EJB private MailFactory mailFactory;
    
    private String asunto;
    private String telefono;
    private String mensaje;
    private Integer cantidad;
    private String condicionPago;

    private boolean skipLogin;
    private boolean compraConfirmada;

    private String razonSocial;
    private String cuit;
    private String direcciónEmail;
    private String observaciones;
    
    private Map<String,String> combos;
    private List<String> combosSeleccionados;
    //private List<PromocionBase> combosPromocion;


    private List<Promocion> promociones;
    private Promocion promocion;
    private MovimientoTienda pedido;

    @ManagedProperty(value = "#{usuarioSessionBean}")
    private UsuarioSessionBean usuarioSession;

    /** Creates a new instance of ContactoMB */
    public PromocionManual(){

    }
    
    @PostConstruct
    private void init(){

        compraConfirmada = false;

        combos = new LinkedHashMap<String, String>();
        combos.put("999001010001","JUEGO VALVULA ADM/ESC BBB GILERA SMASH 125");
        combos.put("999001010002","JUEGO VALVULA ADM/ESC BBB YAMAHA FZ16");
        combos.put("999001010003","JUEGO VALVULA ADM/ESC BBB BAJAJ PULSAR 220");
                    
        if (usuarioSession.isEstaRegistrado() && usuarioSession.getUsuario().getCliente()!=null) {

            razonSocial = usuarioSession.getUsuario().getCliente().getNombre();
            cuit = usuarioSession.getUsuario().getCliente().getNrodoc();
            direcciónEmail = usuarioSession.getUsuario().getCliente().getDireml();

        }else{
            
        }
        JsfUtil.addInfoMessage("Por favor, seleccione los combos disponibles");        
    }

    /**
    public String onFlowProcess(FlowEvent event) {

        if(event.getNewStep().equals("seleccionCombo")){
            JsfUtil.addInfoMessage("Por favor, seleccione los combos disponibles");
        }

        if(event.getOldStep().equals("seleccionCombo")){

            if(combosSeleccionados.isEmpty()){
                JsfUtil.addErrorMessage("Por favor, seleccione al menos 1 combo");
                return event.getOldStep();
            }

            combosPromocion = new ArrayList<PromocionBase>();

            for(String s: combosSeleccionados){

                String descripcion = combos.get(s);
                PromocionBase p = new PromocionBase(s.substring(0, 3), s.substring(3, 12), descripcion, 0);
                p.setPrecio(new BigDecimal("46.90"));
                combosPromocion.add(p);
            }
        }

        if(event.getOldStep().equals("cantidades")){

            for(PromocionBase p: combosPromocion){

                if(p.getCantidad()<= 0){
                   JsfUtil.addErrorMessage("Ingrese una cantidad mayor a cero para el combo "+ p.getDescripcion());
                   return event.getOldStep();
                }
            }

            if (event.getNewStep().equals("identificacion")
                    && usuarioSession.isEstaRegistrado()
                    && usuarioSession.getUsuario().getCliente()!=null){

                return "datos";
            }
        }

        if(event.getNewStep().equals("cantidades")){
            JsfUtil.addInfoMessage("Ingrese las cantidades a comprar y seleccione la condición de pago");
        }

        if(event.getNewStep().equals("identificacion")){

            JsfUtil.addInfoMessage("Ingrese usuario y clave para identificarse, de lo contrario tilde la opción  \"No recuerdo mis datos\" para continuar");
        }

        if(event.getOldStep().equals("identificacion")){


            if(skipLogin){
                return event.getNewStep();
            }

            String sLogin = usuarioSession.login();

            if(!sLogin.equals("../global/principal.xhtml")){
                
                JsfUtil.addInfoMessage("En caso de no recordar los datos de acceso, tilde la opción \"No recuerdo mis datos\" para continuar");
                return event.getOldStep();
            }            
        }

        if(event.getNewStep().equals("datos")){

            if (usuarioSession.isEstaRegistrado() && usuarioSession.getUsuario().getCliente()!=null) {
               
                razonSocial = usuarioSession.getUsuario().getCliente().getNombre();
                cuit = usuarioSession.getUsuario().getCliente().getNrodoc();
                direcciónEmail = usuarioSession.getUsuario().getCliente().getDireml();
                JsfUtil.addInfoMessage("Por favor, valide sus datos");
            }else{

                JsfUtil.addInfoMessage("Por favor, ingrese sus datos");
            }
        }

        if(event.getNewStep().equals("confirmacion")){

            JsfUtil.addInfoMessage("Ha llegado al final, haga click en \"Confirmar compra\" para finalizar");

            if(skipLogin){
                JsfUtil.addWarningMessage("Usted no ha ingresado usuario y clave, por tal motivo nos pondremos en contacto para validar la compra.");
            }
        }
        return event.getNewStep();
    }

    public void confirmarCompra(){

        enviarMailEmpresa();
        enviarMailCliente();        
        reset();


    }
    public void enviarMailCliente(){

        String mensajeConsulta = "Estimado cliente:\n" +
                "Le informamos que hemos recibido su pedido y en breve nos pondremos en contacto con usted para coordinar la entrega. Muchas gracias.\n\n "
                + "\n "                                
                + " Condición de pago: " + condicionPago+"\n";

            mensajeConsulta += "Observaciones: "+observaciones+"\n";

            mensajeConsulta += "Detalle:\n";

            for(PromocionBase pr: combosPromocion){

                mensajeConsulta += pr.getTipo()+"-"+pr.getCodigo()+" "+pr.getDescripcion()+" "
                        + "Cantidad:"+pr.getCantidad()+" Precio:"+pr.getPrecio()+"\n";

            }

        if(mailFactory.enviar(null,"Pedido promo lanzamiento válvulas BBB " ,direcciónEmail, mensajeConsulta)){
            JsfUtil.addInfoMessage("Su compra ha sido procesada, en breve nos pondremos en contacto con usted. Muchas gracias","");
        }else{
            JsfUtil.addWarningMessage("Disculpe las molestias, actualmente no podemos procesar la compra","");
        }
    }

    public void enviarMailEmpresa() {
        try {
            Parametro p = new Parametro();
            try {
                p = parametroRN.getParametros();
            }catch(Exception ex){
                
            }

            String mensajeConsulta = "Pedido de promo lanzamiento Nro. 301 \n\n";
            mensajeConsulta += "Razón social: " + razonSocial + "\n";
            mensajeConsulta += "Cuit:\n" + cuit + "\n";
            mensajeConsulta += "Condición de pago: " + condicionPago+ "\n";
            mensajeConsulta += "Observaciones: "+observaciones+"\n";
            
            mensajeConsulta += "Detalle:\n";

            for(PromocionBase pr: combosPromocion){

                mensajeConsulta += pr.getTipo()+"-"+pr.getCodigo()+" "+pr.getDescripcion()+" "
                        + "Cantidad:"+pr.getCantidad()+" Precio:"+pr.getPrecio()+"\n";

            }

            

            InternetAddress dirFrom = new InternetAddress(direcciónEmail, razonSocial);
            mailFactory.enviar(dirFrom, "Pedido promo lanzamiento válvulas BBB",p.getCorreoElectronicoPool(), mensajeConsulta);

        } catch (UnsupportedEncodingException unsupportedEncodingException) {

            JsfUtil.addErrorMessage(unsupportedEncodingException.getMessage());
        }
    }

    public void reset(){

        setAsunto(null);
        //setEmailContacto(null);
        setTelefono(null);
        setMensaje(null);
//        setNombreContacto(null);
        cantidad = null;
        condicionPago = "";

        compraConfirmada = true;
    }

    //----------------------------------------------------------------------

    public String getAsunto() {
        return asunto;
    }

    public void setAsunto(String asunto) {
        this.asunto = asunto;
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    public UsuarioSessionBean getUsuarioSession() {
        return usuarioSession;
    }

    public void setUsuarioSession(UsuarioSessionBean usuarioSession) {
        this.usuarioSession = usuarioSession;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public ParametrosRN getParametroRN() {
        return parametroRN;
    }

    public void setParametroRN(ParametrosRN parametroRN) {
        this.parametroRN = parametroRN;
    }

    public Integer getCantidad() {
        return cantidad;
    }

    public void setCantidad(Integer cantidad) {
        this.cantidad = cantidad;
    }

    public String getCondicionPago() {
        return condicionPago;
    }

    public void setCondicionPago(String condicionPago) {
        this.condicionPago = condicionPago;
    }

    public Map<String, String> getCombos() {
        return combos;
    }

    public void setCombos(Map<String, String> combos) {
        this.combos = combos;
    }

    public List<String> getCombosSeleccionados() {
        return combosSeleccionados;
    }

    public void setCombosSeleccionados(List<String> combosSeleccionados) {
        this.combosSeleccionados = combosSeleccionados;
    }

    public boolean isSkipLogin() {
        return skipLogin;
    }

    public void setSkipLogin(boolean skipLogin) {
        this.skipLogin = skipLogin;
    }

    public String getCuit() {
        return cuit;
    }

    public void setCuit(String cuit) {
        this.cuit = cuit;
    }

    public String getDirecciónEmail() {
        return direcciónEmail;
    }

    public void setDirecciónEmail(String direcciónEmail) {
        this.direcciónEmail = direcciónEmail;
    }

    public MailFactory getMailFactory() {
        return mailFactory;
    }

    public void setMailFactory(MailFactory mailFactory) {
        this.mailFactory = mailFactory;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public String getRazonSocial() {
        return razonSocial;
    }

    public void setRazonSocial(String razonSocial) {
        this.razonSocial = razonSocial;
    }

    public List<PromocionBase> getCombosPromocion() {
        return combosPromocion;
    }

    public void setCombosPromocion(List<PromocionBase> combosPromocion) {
        this.combosPromocion = combosPromocion;
    }

    public boolean isCompraConfirmada() {
        return compraConfirmada;
    }

    public void setCompraConfirmada(boolean compraConfirmada) {
        this.compraConfirmada = compraConfirmada;
    }

    public MovimientoFacturacion getPedido() {
        return pedido;
    }

    public void setPedido(MovimientoFacturacion pedido) {
        this.pedido = pedido;
    }
     */
    
}
